<!--
 * @Author: your name
 * @Date: 2020-12-28 17:53:01
 * @LastEditTime: 2020-12-29 14:27:17
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \basicvue\vuehtml\vueindex.html
-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../assets/css/common.css">
    <link rel="stylesheet" href="../assets/css/vue.css">
    <script src="../assets/js/vue.js"></script>
</head>
<body>
<div id="app">
    <a href="../index.html" class="retu">BACK</a>
    <h1>Methods方法</h1>
    <span>{{ a }}</span>
    <p><button @click="add(2,$event)">add</button></p>
    <hr>
    <span>自定义的组件是不能直接调用构造器中的方法的，想要调用,需要使用.native修饰器</span>
    <hr>
    <p><btn @click.native="add(2,$event)"></btn></p>
    <hr>
    <p><span>作用域外部调用构造器中的add方法</span></p>
    <hr>
    <p><button onclick="app.add(4)">外部调用构造器里的方法</button></p>
    <hr>
    <p>
        总结三点，使用方法有三种，
        第一种,直接使用@click=add()调用构造器中的methods里面的add方法，
        第二种,使用自定义组件btn，  在外部定义btn组件,在components中进行声明,在组件btn上进行定义，然后调用构造器中的方法，这个时候就要使用.nactive修饰器
        第三种,直接使用原生的方法进行定义  直接使用构造器的app.方法名称来调用方法

    </p>
</div>
<script type="text/javascript">
    //将更新按钮封装成组件
    var btn = {
        template:`<button>组件ADD</button>`
    };

    var app = new Vue({
        el : '#app',
        data : {
            a : 1
        },
        methods:{
            add:function (num,event) {
                console.log(event);
                if(num != ''){
                    this.a += num;
                }else{
                    this.a++;
                }
            }
        },
        components:{
            "btn" : btn
        }
    });
</script>
</body>
</html>